/*
 * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.micode.notes.ui; // 指定该类属于 net.micode.notes.ui 包

import android.content.Context; // 导入 Context 类，用于获取应用程序环境
import android.view.Menu; // 导入 Menu 类，用于创建和管理菜单
import android.view.MenuItem; // 导入 MenuItem 类，表示菜单项
import android.view.View; // 导入 View 类，表示用户界面元素
import android.view.View.OnClickListener; // 导入 OnClickListener 接口，用于处理按钮点击事件
import android.widget.Button; // 导入 Button 类，表示一个按钮
import android.widget.PopupMenu; // 导入 PopupMenu 类，用于创建弹出式菜单
import android.widget.PopupMenu.OnMenuItemClickListener; // 导入 OnMenuItemClickListener 接口，用于处理菜单项点击事件

import net.micode.notes.R; // 导入资源类 R，用于引用资源文件

public class DropdownMenu {
    private Button mButton; // 声明一个 Button 对象，用于显示下拉菜单的按钮
    private PopupMenu mPopupMenu; // 声明一个 PopupMenu 对象，用于创建弹出式菜单
    private Menu mMenu; // 声明一个 Menu 对象，用于管理菜单项

    // 构造函数，初始化 DropdownMenu
    public DropdownMenu(Context context, Button button, int menuId) {
        mButton = button; // 将传入的 Button 参数赋值给 mButton
        mButton.setBackgroundResource(R.drawable.dropdown_icon); // 设置按钮背景为下拉菜单图标
        mPopupMenu = new PopupMenu(context, mButton); // 创建一个新的 PopupMenu，指定上下文和锚点按钮
        mMenu = mPopupMenu.getMenu(); // 获取 PopupMenu 的菜单对象
        mPopupMenu.getMenuInflater().inflate(menuId, mMenu); // 从资源文件加载菜单项
        mButton.setOnClickListener(new OnClickListener() { // 设置按钮点击事件监听器
            public void onClick(View v) { // 当按钮被点击时
                mPopupMenu.show(); // 显示弹出式菜单
            }
        });
    }

    // 设置下拉菜单项点击事件监听器
    public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) {
        if (mPopupMenu != null) { // 检查 mPopupMenu 是否为 null
            mPopupMenu.setOnMenuItemClickListener(listener); // 设置菜单项点击事件监听器
        }
    }

    // 根据菜单项 ID 查找菜单项
    public MenuItem findItem(int id) {
        return mMenu.findItem(id); // 返回指定 ID 的菜单项
    }

    // 设置按钮的标题
    public void setTitle(CharSequence title) {
        mButton.setText(title); // 设置按钮文本为指定标题
    }
}